﻿namespace NKernel.Core.Impl
{
    using System.Collections.Generic;

    /// <summary>
    /// Description of IComponentLoader.
    /// Components are defined with 'DLL' suffixes.
    /// </summary>
    internal interface IComponentLoader
    {
        #region Methods

        /// <summary>
        /// Locations are defined by URL. The URL schema supported are 'file://'
        /// </summary>
        /// <param name="locations">components locations defined by URLs</param>
        /// <param name="directive">directive to explicitly override the component implementations. Cannot be null.</param>
        /// <returns>List of physical description of the discovered component</returns>
        /// <example>file://. or file://C:/FolderName</example>
        IList<ComponentDescriptor> LoadComponents(string[] locations, ComponentOverrideDirective directive);

        #endregion Methods
    }
}